Repository navigation
Preserve opted-in condition occurrence deadlines across false wakes - #1067
Conversation
|
Independent Server cross-contract source review (Security Off): SOURCE PASS, with one cross-runtime parity follow-up and four non-blocking notes. Subject (exact):
Requested checks
Finding 1: cross-runtime history shape (parity follow-up, owner Server; not a defect in this PR)The anchored
The Non-blocking notes
ScopeAfter this PR, the Server PHP app still does not advertise |
|
Source addendum to 6717674660: SOURCE PASS for the successor. Finding 1 is resolved. Subject (exact):
The delta:
Cross-runtime check: anchored Unchanged from the first review: all deadline, anchor, still-open, downgrade, rollback, past-A and legacy behavior, plus the Core 1.22 decision and old-request compatibility. The four non-blocking notes still stand. One optional strengthening: the fixture's two waits are separate first opens. A same-occurrence reopen in replay (remaining < budget, A reused) is covered only by the bridge test. Hosted ECS, unit, coverage and feature on this exact head are still required. 9b896fa's hosted NONPASS (corpus count) stays attributed to that head. This addendum makes no release, runtime or installed-acceptance claim. |
|
Hosted qualification of head4336420d is NONPASS: pr-feature-mysql, run42451248044/job128640956311, reached the service scheduling/completion contracts and failed 1 of228 cases. The current successor is 68e7f3d, tree 88b3f26df228a1d7b50701ebf12c453c8766d80b. The only delta from reviewed4336420d is changing the future-minor input1.22→1.23 in that unit test and the matching webhook feature test. Both still require |
|
Second source addendum (after 6717795667): SOURCE PASS for the test-only successor. Subject (exact):
The delta changes two data-provider rows only. In each, the "future minor" input moves from
This follows from Core What still holds:
This explains the |
|
One full hosted source qualification selected; no integration or release. Draft PR1067 exact head The repository AGENTS.md requires ECS, static analysis, unit, coverage and feature qualification. Pull-request gates intentionally skip the full database/coverage matrix. General selects one workflow_dispatch of existing build workflow Before POST, re-read remote topic, PR head, base/main and exact check set; refuse drift, bad/unknown states or an existing manual run for this head. Freeze the topic during qualification. Record/fsync the attempted marker, send one dispatch without write retry, and discover its unique attempt1 workflow_dispatch run by workflow, actor, branch, exact head and creation time within120seconds. An uncertain dispatch is reconciled read-only, never repeated. Keep returned IDs and raw API records. Start by06:00Z. General owns watch to 07:10Z; if that exact run is still active then, one ordinary cancellation after rechecking its immutable identity, and terminal reconciliation by07:15Z. Any assertion, acquisition, timeout or unknown result is attributed NONPASS; no automatic rerun. Normal per-job limits stay unchanged. Routine06:00 health/backup and alerts preempt observation work without altering this source. Retain bounded logs/artifacts for qualification review; a green dispatch must still be assessed before ready/merge and actual-main custody. #1066 and installed #269 acceptance stay open. |
|
|
Full qualification NONPASS; one test-only successor prepared. The full maintained build run 42452557763, attempt 1 on Successor A bounded local check on the cached exact PHP image passed selected ECS and the SurfaceStability/WorkerProtocol tests: 46 tests, 384 assertions, exit 0, with the container explicitly absent afterward (06:19:47–06:19:48 UTC). This is a local source observation, not a replacement for the full maintained qualification. The earlier corpus, stale future-version and full-coverage NONPASSs remain attributed. A new full exact-head invocation needs its own recorded selection; no rerun of the old failed jobs, integration, tag or release follows from this correction. |
|
Third source addendum, test-only: SOURCE PASS for Subject:
Change: only
Source agreement: No Optional, non-blocking: an The full maintained qualification of this exact head is still required. This addendum makes no release claim. |
|
One fresh full hosted source qualification selected; no integration or release. The previous full run 42452557763 remains NONPASS, with its stale protocol expectation and exact correction recorded in 6718266369. Selected subject: head General selects one new Immediately re-read exact remote head, base/main, draft/CLEAN state and terminal check set, and refuse any drift or existing manual run for this head. Freeze the topic. Fsync an exclusive attempt marker before one dispatch POST, without write retry; discover and record the unique attempt-1 run by workflow, actor, branch, head and creation time. Unknown dispatch is reconciled read-only and never repeated. Start by 06:45 UTC. General owns observation through 07:55 UTC. If the exact run is still active then, recheck immutable identity and issue one ordinary cancellation, with terminal reconciliation by 08:00. Any failure, timeout, acquisition refusal or unknown state remains attributed NONPASS; no automatic retry. A green result still requires assessment of the actual suite and coverage before a separate ready/merge decision and main custody. Issue #1066 and installed #269 acceptance remain open. Routine service health and alerts retain priority. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1067 +/- ##
==========================================
+ Coverage 94.08% 94.09% +0.01%
==========================================
Files 608 609 +1
Lines 84837 84956 +119
==========================================
+ Hits 79817 79943 +126
+ Misses 5020 5013 -7
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
FULL SOURCE QUALIFICATION ACCEPTED; one guarded merge selected. Exact head The one fresh maintained full run 42455200291 completed SUCCESS at 06:56:46 UTC: 18 successful jobs and 5 intended skips. Unit coverage passed 5,928 tests / 80,823 assertions; 15 PHPUnit notices and 49 skipped cases remain visible. All four MySQL shards, all four PostgreSQL shards, MariaDB, both source-upgrade cells, tracing, quality, repository contracts and the replay corpus succeeded. The combined coverage gate passed 93.90% (76,801/81,785) against the unchanged 93.08% accepted baseline. Exact-head checks total 49: 38 successes, 11 skips, no bad or pending states; the commit-status list is empty. The repository quality cycle is met by these maintained source jobs and the recorded local ECS/static/targeted checks. The earlier corpus-growth, future-version fixture and first-full manifest-test NONPASSs remain attributed; none was relabelled or retried in place. General selects one ordinary merge of this exact head after an immediate re-read of head, base/main, full checks and CLEAN state. Mark ready once, then merge with match-head protection; no bypass or force. Expected ordered merge parents are [36961d6, e5e1616], with the exact reviewed tree above. Re-read the actual main commit, tree, parents and signature, then observe actual-main checks through terminal. Retain the topic until those checks are green, then delete only that merged remote branch after the ancestor check. Any drift or bad/unknown state stops further effects. Main qualification observation is owned through 08:00 UTC with a terminal/status report by 08:05; no automatic rerun. This accepts source only and closes no installed #269 gate. Issue #1066 remains open for package delivery and downstream qualification. No tag, package/GitHub Release, PHP Server release, deployment or runtime is selected. The later release notes must scope unchanged per-open behavior to legacy chains and document rollback restrictions for anchored history. |
|
Merged source custody recorded; actual-main checks pending. The qualified-head merge selection 6718493628 executed once, with match-head protection and no bypass. Main is The source full qualification is accepted as recorded. General owns observation of the actual-main checks through terminal; the merged topic remains until those checks are green and its ancestor relationship is verified. No source drift, old-run retry, tag or package release occurred. Issue #1066 remains open for library delivery and downstream installed acceptance. The later release metadata/notes change must preserve this source, clarify legacy per-open behavior and include the anchored-history rollback restriction. PHP Server release and all runtime effects remain unselected. |
|
Actual-main custody accepted. Main The actual-main full build, including unit/combined coverage, all MySQL/PostgreSQL shards, MariaDB, tracing, both embedded upgrade cells, corpus and quality, passed. Build run 42456938720 completed at 07:21:35Z; Codecov statuses completed at 07:21:51Z. The earlier failed qualifications remain attributed to their original heads; the successful full dispatch and its exact-head evidence remain recorded above. After verifying that the qualified head is an ancestor of this main, I deleted only |



An opted-in condition wait now retains its first wall-clock deadline across false-wake reopens. A worker can author a remaining timeout while the runtime schedules the new timer at the original occurrence anchor, including when that deadline has already passed.
The command fields are
deadline_policy: "occurrence"andcondition_wait_timeout_budget_seconds. The first physical open must use the full budget. Every reopen must keep the occurrence ID, key, fingerprint, policy and budget. The anchor comes from the first timer row, which remains authoritative after cancellation. A validated still-open repeat retains its existing wait without consuming another sequence; an elapsed anchor becomes a pending due timer.Mismatches, a fired timeout and an unavailable anchor refuse before any completion effects commit. The run lock and whole-completion transaction also cover signal resume and earlier sibling commands. Existing legacy chains keep their per-open behavior; opting into or out of an existing chain is refused.
Core advertises worker protocol 1.22 and continues accepting 1.20 requests. Opened history records policy, original budget and anchor; TimerScheduled records policy and anchor, matching Native #1098. The change includes payload validation, history retention, replay corpus growth, documentation and causal bridge controls. PHP Server capability advertisement and package delivery follow separately.
Validation on head
e5e161699d920ab127713a7e5cc033de79b3e90e:The earlier corpus-growth, stale future-version and manifest-expectation failures remain attributed in the issue comments. No package release or installed-runtime acceptance is claimed here.
Refs #1066, durable-workflow/sdk-php#269, durable-workflow/server#1098.